This invention relates generally to storage systems associated with computer systems and more particularly to providing a method and apparatus for managing shared storage system resources amongst a plurality of heterogeneous host computers.
As it is known in the art, computer systems generally include a central processing unit, a memory subsystem and a storage subsystem. According to a networked or enterprise model of a computer system, the storage subsystem associated with or in addition to a local computer system, may include a large number of independent storage devices or disks housed in a single enclosure. This array of storage devices is typically connected to several computers (or hosts) via dedicated cabling or via a network. Such a model allows for the centralization of data which is to be shared among many users and also allows a single point of maintenance for the storage functions associated with the many computer systems.
One type of storage system known in the art is one which includes a number of disk storage devices configured as an array (sometimes referred to as Redundant Array of Independent Disks or RAID). Such a system may include several arrays of storage devices. In addition to the arrays of storage devices, typical storage systems include several types of controllers for controlling the various aspects of the data transfers associated with the storage system. One type of controller is a host controller and provides the interface between the host computers and the storage system. Another type of controller is a disk controller. There may be one or more disk controllers for each array of storage devices in a storage system. The disk controller manages the transfer of data to and from its associated array drives.
The storage systems described above are typically used to supply storage services for several host computers. Each of these host computers may at some point in time have access to the same logical drives within the storage system. This type of access may cause one host computer to disrupt the operations associated with another host computer. In addition, at some point in time one host may need to prevent all other hosts from accessing the entire storage system.
Generally, to prevent two disparate host computers from effecting the operations of each other with respect to storage services, a system of locks may be employed. These locks should allow one host computer to gain exclusive control over a particular storage resource or in some instances the entire storage system. Ideally, the locking scheme should be useful for any host attached to the storage system regardless of type (e.g. mainframe or open systems).
Previous methods of locking resources within a storage subsystem have been limited to locking particular records associated with database files. Additionally, previous locking mechanisms have been limited to a single processor (i.e. host computer) or have been limited to a single type of host computer connected to a storage system. Since, as described above, today's storage subsystems may provide storage services for both mainframe and open systems type computers simultaneously, these prior art lock mechanisms are not robust. It would be advantageous therefore to provide a universal lock mechanism where one host computer would be able to lock out other host computers, regardless of type, from using a storage system or resources within the storage system.